Fix Travis OSX
authorAlex Crichton <alex@alexcrichton.com>
Thu, 6 Oct 2016 16:48:12 +0000 (09:48 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Fri, 7 Oct 2016 16:41:24 +0000 (09:41 -0700)
They recently changed images, gotta tweak how we work with OpenSSL

.travis.yml
tests/cargotest/lib.rs

index 2aef32ba66c58a386c2cde18105def134fdd34e5..731d1a5f272c5857131e075771f78ee07b58187a 100644 (file)
@@ -27,9 +27,13 @@ env:
     - CARGOFLAGS=-j1
     - secure: scGpeetUfba5RWyuS4yt10bPoFAI9wpHEReIFqEx7eH5vr2Anajk6+70jW6GdrWVdUvdINiArlQ3An2DeB9vEUWcBjw8WvuPtOH0tDMoSsuVloPlFD8yn1Ac0Bx9getAO5ofxqtoNg+OV4MDVuGabEesqAOWqURNrBC7XK+ntC8=
 
-os:
-  - linux
-  - osx
+matrix:
+  include:
+    - os: osx
+      rust: stable
+      before_install:
+        - export OPENSSL_INCLUDE_DIR=`brew --prefix openssl`/include
+        - export OPENSSL_LIB_DIR=`brew --prefix openssl`/lib
 
 branches:
   only:
index ffd094f9759fb5bfe07f214914bf800a77e3baf1..cc5b17cf01cc72776394198d4d806b35887508dc 100644 (file)
@@ -22,6 +22,7 @@ use cargo::util::Rustc;
 use std::ffi::OsStr;
 use std::time::Duration;
 use std::path::PathBuf;
+use std::env;
 
 pub mod support;
 pub mod install;
@@ -40,7 +41,11 @@ pub fn is_nightly() -> bool {
 }
 
 pub fn process<T: AsRef<OsStr>>(t: T) -> cargo::util::ProcessBuilder {
-    let mut p = cargo::util::process(t.as_ref());
+    _process(t.as_ref())
+}
+
+fn _process(t: &OsStr) -> cargo::util::ProcessBuilder {
+    let mut p = cargo::util::process(t);
     p.cwd(&support::paths::root())
      .env_remove("CARGO_HOME")
      .env("HOME", support::paths::home())
@@ -51,6 +56,35 @@ pub fn process<T: AsRef<OsStr>>(t: T) -> cargo::util::ProcessBuilder {
      .env("GIT_CONFIG_NOSYSTEM", "1")    // keep trying to sandbox ourselves
      .env_remove("CARGO_TARGET_DIR")     // we assume 'target'
      .env_remove("MSYSTEM");             // assume cmd.exe everywhere on windows
+
+    // We'll need dynamic libraries at some point in this test suite, so ensure
+    // that the rustc libdir is somewhere in LD_LIBRARY_PATH as appropriate.
+    // Note that this isn't needed on Windows as we assume the bindir (with
+    // dlls) is in PATH.
+    if cfg!(unix) {
+        let var = if cfg!(target_os = "macos") {
+            "DYLD_LIBRARY_PATH"
+        } else {
+            "LD_LIBRARY_PATH"
+        };
+        let rustc = RUSTC.with(|r| r.path.clone());
+        let path = env::var_os("PATH").unwrap_or(Default::default());
+        let rustc = env::split_paths(&path)
+                        .map(|p| p.join(&rustc))
+                        .find(|p| p.exists())
+                        .unwrap();
+        let mut libdir = rustc.clone();
+        libdir.pop();
+        libdir.pop();
+        libdir.push("lib");
+        let prev = env::var_os(&var).unwrap_or(Default::default());
+        let mut paths = env::split_paths(&prev).collect::<Vec<_>>();
+        println!("libdir: {:?}", libdir);
+        if !paths.contains(&libdir) {
+            paths.push(libdir);
+            p.env(var, env::join_paths(&paths).unwrap());
+        }
+    }
     return p
 }